// let Fly = require("flyio/dist/npm/wx")
import Fly from "flyio/dist/npm/wx"
let fly = new Fly

//设置超时
fly.config.timeout = 300000;
//设置请求基地址
fly.config.baseURL = 'http://127.0.0.1:9100';

// 添加请求拦截器
fly.interceptors.request.use((request) => {
    // 给所有请求添加自定义header，带上token信息让服务器验证用户登陆
    let token = uni.getStorageSync('token');
    request.headers['Authorization'] = token;
	
	// 只在token存在且不为空字符串时才设置Authorization头
	    if (token && typeof token === 'string' && token.trim() !== '') {
	        // 移除可能存在的特殊字符或进行编码
	        const safeToken = token.replace(/[^\x20-\x7E]/g, '');
	        request.headers['Authorization'] = safeToken;
	    } else {
	        // 如果没有有效token，移除Authorization头
	        delete request.headers['Authorization'];
	    }
	    
	
    // 在当前页面显示导航条加载动画
    uni.showNavigationBarLoading();
    return request;
})
// 添加响应拦截器，响应拦截器会在then/catch处理之前执行
fly.interceptors.response.use(
    (response) => {
		console.log(response)
        if (response.data.code != 200) {
            uni.showToast({
                title: response.data.msg,
                icon: 'none',
            });
        }
        uni.hideNavigationBarLoading()
        return response.data; //请求成功之后将返回值返回
    },
    (err) => {
        // 在当前页面隐藏导航条加载动画
        uni.hideNavigationBarLoading()

        if (err.status === 0) {
            uni.showToast({
                title: '网络请求延时',
                icon: "none",
            });
            return Promise.reject(err);
        }
        let code = err.response.status;
		if (code === 401) {
			uni.navigateTo({
				url: "/pages/login/login"
			});
		} else if (code === 403) {
			uni.showToast({
			    title: '没有权限',
			    icon: "none",
			});
			return Promise.reject(err);
		} else {
            uni.showToast({
                title: err.response.data.message,
                icon: "none",
            });
            return Promise.reject(err);
        }
    }
)
export default fly;

